use crate::{event_info, math::Vector2u};

use super::event_type::{Event, EventCategory, EventType, StaticEvent};


event_info! {
    pub struct WindowResizeEvent {
        handle:     bool,
        width:      u32,
        height:     u32
    },
    EventType::WindowResize,
    EventCategory::EventCategoryApplication
}

impl WindowResizeEvent {
    pub fn get_window_size(&self) -> Vector2u {
        Vector2u::new(self.width,self.height)
    }
}



event_info! {
    pub struct WindowCloseEvent {
        handle:bool
    },
    EventType::WindowClose,
    EventCategory::EventCategoryApplication
}



event_info! {
    pub struct AppUpdateEvent {
        handle:bool,
    },
    EventType::AppUpdate,
    EventCategory::EventCategoryApplication
}



event_info! {
    pub struct AppTickEvent {
        handle:bool,
    },
    EventType::AppTick,
    EventCategory::EventCategoryApplication
}




event_info! {
    pub struct AppRenderEvent {
        handle:bool,
    },
    EventType::AppRender,
    EventCategory::EventCategoryApplication
}


